package cn.akwangl.concurrency.web.model.items.mapper;

import cn.akwangl.concurrency.web.model.items.pojo.ItemsSpecEntity;
import cn.akwangl.concurrency.web.model.order.pojo.ShopCart;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 商品规格 每一件商品都有不同的规格，不同的规格又有不同的价格和优惠力度，规格表为此设计 Mapper 接口
 * </p>
 *
 * @author 阿坤同学
 * @since 2022-11-22 14:30:33
 */
@Mapper
public interface ItemsSpecMapper extends BaseMapper<ItemsSpecEntity> {

    /**
     * 利用数据库版本号扣减商品库存(它是线程安全的).
     *
     * @param shopCarts 购物车信息.
     * @return 受影响行数
     * @author 阿坤同学
     * @date 2022-11-23 10:37
     */
    int decreaseItemSpecStockVersion(@Param("shopCarts") List<ShopCart> shopCarts);

    /**
     * 扣减商品库存(它不是线程安全的).
     *
     * @param shopCarts 购物车信息.
     * @return 受影响行数
     * @author 阿坤同学
     * @date 2022-11-23 10:37
     */
    int decreaseItemSpecStock(@Param("shopCarts") List<ShopCart> shopCarts);

    /**
     * 统计库存数.
     *
     * @param itemsSpecIds 商品规格Id集合
     * @return 所有商品规则库存数.
     * @author 阿坤同学
     * @date 2022-11-24 20:16
     */
    long countStock(@Param("itemsSpecIds") List<String> itemsSpecIds);
}
